package string;

/**
 * 为了解决修改字符串性能低下的问题，java提供了专门用于修改字符串的API：StringBuilder
 * StringBuilder内部维护一个可变的char数组，修改内容性能优异
 * 并且提供了便于修改字符串内容的相关方法（增删改插）。
 */
public class StringBuilderDemo {
    public static void main(String[] args) {
        String line = "好好学习java";
        //内部表示一个空字符串
        //StringBuilder builder = new StringBuilder();
        //将给定的字符串内容复制到StringBuilder中
        /*
        StringBuilder 与StringBuffer
        StringBuffer始于JDK1.0，而StringBuilder始于1.5
        区别是StringBuffer是线程安全的，而StringBuilder则不是。
         */
        StringBuilder builder = new StringBuilder(line);
        /*
        好好学习java
        好好学习java，为了找个好工作
        appeed（）：将给定的内容追加到字符串末尾
         */
        builder.append("，为了找个好工作");
        System.out.println(line);
        System.out.println(builder);

        /*
        好好学习java，为了找个好工作
        好好学习java，就是为了改变世界
        replace（）：替换部分内容（改）
         */
        builder.replace(9,16,"就是为了改变世界");
        System.out.println(builder);
        /*
        好好学习java，就是为了改变世界！
        ，就是为了改变世界！
        delete（）：删除部分内容
         */
        builder.delete(0,8);
        System.out.println(builder);
        /*
        ,就是为了改变世界！
        活着，就是为了改变世界！
        insert（）：在当前字符串指定位置处插入指定内容
         */
        builder.insert(0,"活着");
        System.out.println(builder);

        builder.reverse(); //反转字符串
        System.out.println(builder);
        /*
        StringBuilder提供了String中常用的操作放法
        length，indexOf，charAt等等
         */
        char c = builder.charAt(2);
        System.out.println(c);

        /*
        StringBuilder是修改String的一个工具而不是String类。
        因此使用它修改后若希望得到改后的String，我们可以通过调用它的
        toString方法获取
         */
        line = builder.toString();
        System.out.println(line);

    }
}
